在服飾或配件上嵌入 NeoPixel 燈條,創造可穿戴的 LED 服裝,常見於表演服裝或主題派對。
用於背光鍵盤、滑鼠墊或遊戲主機外殼,通過軟體控制燈光效果,增強視覺體驗。
NeoPixel 燈條可以用於智能家居的環境照明,通過手機應用程式或語音助理來控制燈光顏色和亮度。
在聖誕樹或其他節日裝飾品上使用 NeoPixel 燈條,通過程式控制實現多種燈光效果,增添節日氣氛。
在汽車或自行車上安裝 NeoPixel 燈條,用於底盤燈或車內氛圍燈,通過控制器改變燈光效果,增加個性化元素。
MicroPython 的 neopixel 模组是用来控制 NeoPixel LED 燈條。NeoPixel 是一種基於 WS2812 或 WS2812B LED 的可程式化 RGB LED 燈條,每個 LED 燈都包含一個控制晶片,可以獨立設定其顏色與亮度。neopixel 模组讓 MicroPython 語言環境有更便利的方式來控制 LED 燈。
WS2812B 的規格:
玩學運算推出的 LED 燈環擴充版是使用 WS2812B LED,其中特別的地方是他是使用 3.3V 就能推動的版本。讓您搭配 ESP32 開發更方便。
如何啟動內建的電子骰子程式?
接上燈環擴充版,按住右邊藍色的 B 鍵,然後開機。就會叫出內建的電子骰子程式。搖動機器,燈環就會開始跑動並會發出聲音。
import time
from machine import Pin
from neopixel import NeoPixel
LED_RED = (64, 0, 0)
LED_GREEN = (0, 64, 0)
LED_BLUE = (0, 0, 64)
LED_YELLOW = (64, 64, 0)
pin = Pin(2, Pin.OUT)
np = NeoPixel(pin, 12)
# 亮紅綠燈
np[11] = LED_RED
np[0] = LED_YELLOW
np[1] = LED_GREEN
np.write()
import time
from machine import Pin
from neopixel import NeoPixel
pin = Pin(2, Pin.OUT)
np = NeoPixel(pin, 12)
for i in range(0, 12):
np[i] = (0, 64, 0)
np.write()
time.sleep(1)
np[i] = (0, 0, 0)
np.write()
import time
from machine import Pin
from neopixel import NeoPixel
pin = Pin(2, Pin.OUT)
np = NeoPixel(pin, 12)
# 主程式
def set_light(red, yellow, green):
"""設定紅綠燈的顏色"""
np[11] = (red, 0, 0) # 紅燈
np[0] = (yellow, yellow, 0) # 黃燈
np[1] = (0, green, 0) # 綠燈
np.write()
while True:
# 紅燈亮 10 秒
for i in range(8):
set_light(255, 0, 0) # 紅燈亮,黃燈和綠燈關
time.sleep(1)
# 第8秒時黃燈開始閃爍,紅燈保持亮
for i in range(4):
set_light(255, 255, 0) # 紅燈和黃燈亮
time.sleep(0.5)
set_light(255, 0, 0) # 紅燈亮,黃燈關
time.sleep(0.5)
# 綠燈亮 8 秒
for i in range(6):
set_light(0, 0, 255) # 綠燈亮,紅燈和黃燈關
time.sleep(1)
# 第6秒時綠燈開始閃爍
for i in range(4):
set_light(0, 0, 255) # 綠燈亮
time.sleep(0.5)
set_light(0, 0, 0) # 所有燈都關
time.sleep(0.5)
# 迴圈結束後自動回到紅燈狀態
# 彩燈骰子
import time
import neopixel
# 蜂鳴器啟動
machine.Pin(17, 2).value(1)
snd = machine.PWM(machine.Pin(25,2))
snd.duty(0)
def play(f, t):
snd.freq(f); snd.duty(50)
time.sleep(t); snd.duty(0)
# 燈環控制
numbers = 12
np = neopixel.NeoPixel(machine.Pin(2), numbers, bpp = 3)
print('請按任一鍵開始丟骰子!')
wb.cls()
while True:
if wb.getkey() > 0:
count = wb.rand() % 100 + 20
for i in range(1, count):
np[i%numbers] = (64, 0, 0)
play(880, 0.02)
np.write()
wb.str(str(i%numbers), 10, 20, 2, 15)
if i == count-1:
print('')
else:
wb.cls()
np[i%numbers] = (0, 0, 0)
time.sleep(0.01)
執行畫面